/* mic.c
**
** Copyright (c) 2007, Meadhbh S. Hamrick
** All rights reserved.
** 
** Redistribution  and  use  in  source  and  binary  forms,  with  or  without
** modification, are permitted provided that the following conditions are met:
** 
**  * Redistributions of  source code must  retain the above  copyright notice,
**    this list of conditions and the following disclaimer.
** 
**  * Redistributions in binary form must reproduce the above copyright notice,
**    this list of conditions and the following disclaimer in the documentation
**    and/or other materials provided with the distribution.
** 
**  * Neither the  name of  Project Meadhbh  nor the names of  its contributors
**    may be used  to endorse  or promote  products derived from this  software
**    without specific prior written permission.
** 
** THIS SOFTWARE IS PROVIDED BY  THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY  EXPRESS OR IMPLIED WARRANTIES,  INCLUDING, BUT NOT  LIMITED TO, THE
** IMPLIED WARRANTIES  OF MERCHANTABILITY AND FITNESS FOR  A PARTICULAR PURPOSE
** ARE DISCLAIMED.  IN NO  EVENT SHALL THE  COPYRIGHT OWNER OR  CONTRIBUTORS BE
** LIABLE  FOR  ANY  DIRECT,   INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR
** CONSEQUENTIAL  DAMAGES  (INCLUDING,  BUT  NOT  LIMITED  TO,  PROCUREMENT  OF
** SUBSTITUTE GOODS  OR SERVICES;  LOSS OF USE,  DATA, OR PROFITS;  OR BUSINESS
** INTERRUPTION)  HOWEVER CAUSED  AND ON  ANY THEORY  OF LIABILITY,  WHETHER IN
** CONTRACT,  STRICT LIABILITY,  OR  TORT (INCLUDING  NEGLIGENCE OR  OTHERWISE)
** ARISING IN ANY WAY  OUT OF THE USE OF THIS SOFTWARE,  EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
** 
** $Id: mic.c 46 2007-08-30 16:52:27Z msh.mobile $
*/

/** \file mic.c
 ** This file implements the algorithm-independent cryptographic hash function implementation
 */

/* Macro Definitions */
#define MCRYPTO_KERNEL

/* File Includes */
#include "mcrypto.h"
#include "mutil.h"

/* Static Prototypes */

/* Function Definitions */

/** \fn tMCErr
**  \brief 
**  \param 
**  \param old_context the location of the context to copy
**  \return MC_E_NOERR if there are no errors
*/

tMCErr mc_mic_new( tMCContext **context, tMCAlgorithm algo ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_new_from_ber( tMCContext **context, uint8_t *ber )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_new_from_ber( tMCContext **context, uint8_t *ber ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_new_from_string( tMCContext **context, uint8_t *string, uint32_t length )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_new_from_string( tMCContext **context, uint8_t *string, uint32_t length ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_new_from_oid( tMCContext **context, uint8_t *oid, uint32_t length )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_new_from_oid( tMCContext **context, uint8_t *oid, uint32_t length ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_clone( tMCContext **new_context, tMCContext *old_context )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_clone( tMCContext **new_context, tMCContext *old_context ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_destroy( tMCContext *context )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_destroy( tMCContext *context ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_clear( tMCContext *context )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_clear( tMCContext *context ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_context_size( tMCAlgorithm algo, uint32_t *size )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_context_size( tMCAlgorithm algo, uint32_t *size ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_output_size( tMCContext *context, uint32_t *size )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_output_size( tMCContext *context, uint32_t *size ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_output_size_from_algorithm( tMCAlgorithm algo, uint32_t *size )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_output_size_from_algorithm( tMCAlgorithm algo, uint32_t *size ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_algorithm_from_ber( tMCAlgorithm *algo, uint8_t *ber )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_algorithm_from_ber( tMCAlgorithm *algo, uint8_t *ber ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_algorithm_from_string( tMCAlgorithm *algo, uint8_t *string, uint32_t length )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_algorithm_from_string( tMCAlgorithm *algo, uint8_t *string, uint32_t length ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_algorithm_from_oid( tMCAlgorithm *algo, uint8_t *oid, uint32_t length )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_algorithm_from_oid( tMCAlgorithm *algo, uint8_t *oid, uint32_t length ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_initialize( tMCContext *context )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_initialize( tMCContext *context ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_update( tMCContext *context, uint8_t *data, uint32_t length )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_update( tMCContext *context, uint8_t *data, uint32_t length ) {
  return( MC_E_UNIMPLEMENTED );
}

/** \fn tMCErr mc_mic_digest( tMCContext *context, uint8_t *digest )
 ** \brief
 ** \param
 ** \returns
 */
tMCErr mc_mic_digest( tMCContext *context, uint8_t *digest ) {
  return( MC_E_UNIMPLEMENTED );
}

